package com.leetcode.p0;

import com.utils.DataUtils;

public class Test26 {

//    public int removeDuplicates(int[] nums) {
//        if (nums == null || nums.length == 0) {
//            return 0;
//        }
//
//        int k = 1;
//        int repeatCount = 0;
//        for (int i = 1; i < nums.length; i++) {
//            if (nums[i] != nums[i - 1]) {
//                nums[k] = nums[i];
//                repeatCount = 0;
//                k++;
//            }
//            //如果当前数跟k前的数相等了
//            else if (nums[i] == nums[k - 1]) {
//                if (repeatCount == 0) {
//                    nums[k] = nums[i];
//                    k++;
//                    repeatCount++;
//                }
//            }
//        }
//
//        return k;
//    }

    public int removeDuplicates(int[] nums) {
        if (nums == null) {
            return 0;
        }

        int length = nums.length;

        if (length <= 2) {
            return length;
        }

        int k = 2;
        for (int i = 2; i < length; i++) {
            if (nums[k - 2] != nums[i]) {
                nums[k] = nums[i];
                k++;
            }
        }

        return k;
    }

    /**
     * 1,1,2,2,2
     */
    public static void main(String[] args) {
        int[] array = new int[]{1, 1, 1, 2, 2};
//        int[] array = new int[]{1, 1, 1, 2, 2, 3, 3, 3, 3, 4, 4};
//        int[] array = new int[]{1, 1, 1, 1};
        Test26 test = new Test26();
        int count = test.removeDuplicates(array);
        DataUtils.printArray(array, count);
    }

}
